﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ABC_SA_DM;
using ABC_SA_BLV;
using ABC_SA_DAL;

namespace ABC_SA
{
    public partial class frmFactura : Form
    {
        public Int32 cantidadComprada = 0;
        public Paquete paqueteComprada;
        private Factura_BLV blvFactura = new Factura_BLV();
        private string usuario;

        public frmFactura(string n)
        {
            InitializeComponent();
            usuario = n;
        }

        private void frmFactura_Load(object sender, EventArgs e)
        {
            //string usuario = lblUsuario.Text;
            // Consulta con el cliente los datos
            //string usuario = "mgarcia";
            
            Cliente cliente = blvFactura.consultaClienteID(usuario);
            if(cliente != null){
                blvFactura.agregarClienteA_Factura(cliente);
            }

            // Llena con los datos del cliente
            lblUsuario.Text = cliente.UserName;
            lblNombreCliente.Text = cliente.Nombre + " " + cliente.ApellidoPat + " " + cliente.ApellidoMat;

            

        }

        private void bttAgregarPaquete_Click(object sender, EventArgs e)
        {
            using (frmCatalogoPaquetes cataPaque = new frmCatalogoPaquetes())
            {

                
                //if (cataPaque.ShowDialog() == DialogResult.OK)
                //{
                    cataPaque.ShowDialog();

                // Recupera los datos seleccionados

                    if (cataPaque.cantidad != 0 && cataPaque.paqueteSelec != null)
                    {
                        
                        blvFactura.agregarDetalleA_Factura(cataPaque.paqueteSelec, cataPaque.cantidad);

                        cantidadComprada = cataPaque.cantidad;
                        paqueteComprada = cataPaque.paqueteSelec;
                        listarPaqueteAgregado(paqueteComprada, cantidadComprada);
                    }

                //}
            }
        }


        private void listarPaqueteAgregado(Paquete paquete, Int32 cantidad)
        {

            //string[] newRow = { cantidad, paquete.nombreSG, listaP.ElementAt(i).idSG + "" };
            //string[] newRow = { cantidad.ToString(), paquete.nombreSG, calcularMonto(paquete,cantidad).ToString() };
            //dgvDetalle.Rows.Add(newRow);

            dgvDetalle.Rows.Clear();
            List<Detalle> listDeta = blvFactura.obtenerFactura().listaDetalle;

            for (int i = 0; i < listDeta.Count(); i++) {

                string cant = listDeta.ElementAt(i).cantidad.ToString();
                string idPaque = listDeta.ElementAt(i).paquete.idSG.ToString();
                string nombPaque = listDeta.ElementAt(i).paquete.nombreSG.ToString();
                string montoDetalle = listDeta.ElementAt(i).montoDetalle.ToString();

                string[] newRow = { cant, idPaque, nombPaque, montoDetalle };
                dgvDetalle.Rows.Add(newRow);
            }
            



            lblMontoTotal.Text = blvFactura.obtenerFactura().montoFinal.ToString();
            
        
        }




        private void bttComprar_Click(object sender, EventArgs e)
        {
            if (blvFactura.facturar())
            {

                lblNumeroFactura.Text = blvFactura.obtenerFactura().numeroFactura.ToString();
                MessageBox.Show("Se creado la factura: " + lblNumeroFactura.Text + " correctamente.¡Gracias por su compra!");

            }
            else
            {
                MessageBox.Show("Error para confeccionar la Factura");

            }
        }

        private void btnatras_Click(object sender, EventArgs e)
        {
            ValidacionInicio inicio = new ValidacionInicio();
            this.Hide();
            inicio.Show();
        }



    }
}
